/**
 * API client header file.
 */

#ifndef API_CLIENT_H
#define API_CLIENT_H

#include <string>
#include <map>

namespace api {

class Client {
public:
    explicit Client(const std::string& base_url, const std::string& api_key = "");
    ~Client();
    
    std::map<std::string, std::string> get_data(const std::string& endpoint);
    std::map<std::string, std::string> post_data(const std::string& endpoint, 
                                                 const std::map<std::string, std::string>& data);
    std::map<std::string, std::string> upload_file(const std::string& endpoint, 
                                                   const std::string& file_path);
    
    void close();

private:
    std::string base_url_;
    std::string api_key_;
    bool is_closed_;
    
    std::string build_url(const std::string& endpoint);
};

} // namespace api

#endif // API_CLIENT_H